1 using System.Collections;
2 using
System.Collections.Generic;
3 using
UnityEngine;
4 using
UnityEngine.UI;
5 using
UnityEngine.SceneManagement;
6
7 public
class GameplayController : MonoBehaviour {
8     
public static GameplayController instance;
9
10     
public GameObject player, statusTab, deployButton, upgradeButton, coinTab, upgradMenuPanel, arrowIcon, gameoverPanel, pausePanel, cloud;
11     
public bool gameInProgress, startMoving;
12     
public Text warningText, coinText, currentCoinText, currentWeaponLevel, nextWeaponLevel, maxLevelText, activeWeaponLevelText, priceText, scoreText, gameoverCoinText;
13     
public int coins, price;
14     
public Animator upgrade;
15
16     
void Awake(){
17         CreateInstance ();
18     }
19
20     
// Use this for initialization
21     
void Start () {
22         
if(MusicController.instance != null && GameController.instance != null){
23             
if (GameController.instance.isMusicOn) {
24                 MusicController.instance.PlayGameplaySound ();
25             }
else {
26                 MusicController.instance.StopAllSound ();
27             }
28         }
29
30         InitializeGameplayVariables ();
31     }
32     
33     
// Update is called once per frame
34     
void Update () {
35         
if(Input.GetKeyDown(KeyCode.Escape)){
36             PausePanel ();
37         }
38     }
39
40     
void InitializeGameplayVariables(){
41         
if(GameController.instance != null){
42             InitializeCoins ();
43             InitializeWeaponLevel ();
44             InitializeUpgradePrice ();
45         }
46         InitializePlayer ();
47         statusTab.SetActive (
true);
48         deployButton.SetActive (
true);
49         upgradeButton.SetActive (
true);
50         coinTab.SetActive (
false);
51         gameoverPanel.SetActive (
false);
52         startMoving =
false;
53     }
54
55     
void InitializeCoins(){
56         coins =
0;
57         coinText.text = coins.ToString ();
58         currentCoinText.text = GameController.instance.coins.ToString(
"N0");
59     }
60
61     
void InitializeWeaponLevel(){
62         
if (GameController.instance.weaponLevel != 5) {
63             currentWeaponLevel.text =
"LVL " + GameController.instance.weaponLevel.ToString ();
64             
int newLevel = GameController.instance.weaponLevel + 1;
65             nextWeaponLevel.text =
"LVL " + newLevel.ToString ();
66             maxLevelText.gameObject.SetActive (
false);
67             activeWeaponLevelText.text = GameController.instance.weaponLevel.ToString();
68         }
else {
69             arrowIcon.SetActive (
false);
70             currentWeaponLevel.gameObject.SetActive (
false);
71             nextWeaponLevel.gameObject.SetActive (
false);
72             maxLevelText.gameObject.SetActive (
true);
73             activeWeaponLevelText.text =
"MAX";
74         }
75     }
76         
77
78     
void InitializeUpgradePrice(){
79         
if (GameController.instance.weaponLevel != 5) {
80             price = GetPrice (GameController.instance.weaponLevel);
81             priceText.text = price.ToString ();
82         }
else {
83             priceText.transform.GetChild (
0).gameObject.SetActive (false);
84             priceText.text =
"MAX";
85         }
86
87     }
88
89     
private int GetPrice(int level){
90         
int nextPrice = 0;
91
92         
switch(level){
93
94         
case 1:
95             nextPrice =
500;
96             
break;
97
98         
case 2:
99             nextPrice =
1200;
100             
break;
101         
102         
case 3:
103             nextPrice =
2500;
104             
break;
105         
106         
case 4:
107             nextPrice =
5000;
108             
break;
109         }
110             
111
112         
return nextPrice;
113     }
114
115     
void InitializePlayer(){
116         Instantiate (player,
new Vector3 (0, -3.5f, 0), Quaternion.identity);
117     }
118
119     
void CreateInstance(){
120         
if(instance == null){
121             instance =
this;
122         }
123     }
124
125     
void ClearAllEnemies(){
126         GameObject[] enemies = GameObject.FindGameObjectsWithTag (
"Enemy");
127         GameObject[] bossbullets = GameObject.FindGameObjectsWithTag (
"Boss Bullet");
128         GameObject[] coins = GameObject.FindGameObjectsWithTag (
"Coin");
129         GameObject boss = GameObject.FindGameObjectWithTag (
"Boss");
130
131         
if(boss != null){
132             Destroy (boss);
133         }
134
135         
if(enemies != null){
136             
foreach (GameObject enemy in enemies) {
137                 Destroy (enemy);
138             }
139         }
140
141         
if(bossbullets != null){
142             
foreach (GameObject bossBullet in bossbullets) {
143                 Destroy (bossBullet);
144             }
145         }
146
147         
if(coins != null){
148             
foreach (GameObject coin in coins) {
149                 Destroy (coin);
150             }
151         }
152
153     }
154
155     
public void ShowWarning(){
156         StartCoroutine (SpawnBossTime());
157     }
158
159     IEnumerator SpawnBossTime(){
160         warningText.gameObject.SetActive (
true);
161         warningText.transform.GetComponent<WarningText> ().PlayWarning ();
162         
yield return new WaitForSeconds (5f);
163         warningText.gameObject.SetActive (
false);
164         warningText.transform.GetComponent<WarningText> ().StopWarning ();
165         GameObject.FindGameObjectWithTag (
"Spawner").transform.GetComponent<EnemySpawner> ().SpawnBoss ();
166     }
167         
168
169     
public void DeployButton(){
170         statusTab.SetActive (
false);
171         deployButton.SetActive (
false);
172         upgradeButton.SetActive (
false);
173         coinTab.SetActive (
true);
174         Instantiate (cloud,
new Vector3(0, 0, 0), Quaternion.identity);
175         startMoving =
true;
176     }
177
178     
public void UpgradeButton(){
179         upgradMenuPanel.SetActive (
true);
180     }
181
182     
public void CloseButton(){
183         upgradMenuPanel.SetActive (
false);
184     }
185
186     
public void PurchaseUpgrade(){
187
188         
if(GameController.instance != null){
189             
if(GameController.instance.weaponLevel != 5){
190                 
if (GameController.instance.coins >= price) {
191                     GameController.instance.coins -= price;
192                     GameController.instance.weaponLevel +=
1;
193
194                     GameController.instance.Save ();
195         
196                     InitializeCoins ();
197                     InitializeUpgradePrice ();
198                     InitializeWeaponLevel ();
199                 }
else {
200                     upgrade.Play (
"Upgrade Button Anim");
201                 }
202             }
203         }
204     }
205
206     
public void UpdateCoins(){
207         coins +=
1;
208         coinText.text = coins.ToString ();
209     }
210
211     
public void GameOver(){
212         gameoverPanel.SetActive (
true);
213         gameoverCoinText.text = coins.ToString (
"N0");
214         scoreText.text = coins.ToString (
"N0");
215         
if(GameController.instance.coins != null){
216             GameController.instance.coins += coins;
217             GameController.instance.Save ();
218         }
219     }
220
221     
public void RetryButton(){
222         InitializeGameplayVariables ();
223         ClearAllEnemies ();
224         gameInProgress =
false;
225         GameObject.FindGameObjectWithTag (
"Spawner").transform.GetComponent<EnemySpawner> ().active = false;
226     }
227
228     
public void InitializeSpawners(){
229         GameObject.FindGameObjectWithTag (
"Spawner").transform.GetComponent<EnemySpawner> ().InitializeVariables ();
230         gameInProgress =
true;
231     }
232
233     
public void ResumeButton(){
234         pausePanel.SetActive (
false);
235         Time.timeScale =
1;
236         gameInProgress =
true;
237     }
238
239     
public void QuitButton(){
240         SceneManager.LoadScene (
"Main Menu");
241         Time.timeScale =
1;
242     }
243
244     
void PausePanel(){
245         
if (gameInProgress && !pausePanel.activeInHierarchy) {
246             pausePanel.SetActive (
true);
247             Time.timeScale =
0;
248             gameInProgress =
false;
249         }
else if(!gameInProgress && !pausePanel.activeInHierarchy) {
250             SceneManager.LoadScene (
"Main Menu");
251         }
252     }
253
254         
255 }


Use this for initialization

Update is called once per frame



Gõ tìm kiếm nhanh...